// interface Date {
//     format(fmt: string): string;
// }

/**
 *
 * @param {number} num 星期几
 * @return {string}
 */
function toChanese(num: number): string {
  switch (num) {
    case 1:
      return '一';
    case 2:
      return '二';
    case 3:
      return '三';
    case 4:
      return '四';
    case 5:
      return '五';
    case 6:
      return '六';
    case 0:
      return '日';
    default:
      return '';
  }
}

declare global {
  export interface Date {
    format(fmt: string): string;
  }
  // export interface Window {
  //   myname: string;
  // }
}
// eslint-disable-next-line no-unused-vars
interface Date {
  format(fmt: string): string;
}
/* eslint no-extend-native: ["error", { "exceptions": ["Date"] }]*/
Date.prototype.format = function (fmt: string) {
  const o: Record<string, string> = {
    'M+': (this.getMonth() + 1).toString(), // 月份
    'd+': this.getDate().toString(), // 日
    'h+': this.getHours().toString(), // 小时
    'm+': this.getMinutes().toString(), // 分
    's+': this.getSeconds().toString(), // 秒
    'q+': Math.floor((this.getMonth() + 3) / 3).toString(), // 季度
    S: this.getMilliseconds().toString(), // 毫秒
    几: toChanese(this.getDay()) || '',
  };

  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      this.getFullYear()
        .toString()
        .substr(4 - RegExp.$1.length)
    );
  }

  for (const k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : `00${o[k]}`.substring(o[k].length)
      );
    }
  }

  return fmt;
};
export {};
